const {client: {clientdir}, server} = require('./config/config.json');
module.exports = {
  // 默认： universal  服务端渲染 。 可选  spa: 单页面
  mode: 'universal',
  /*
  ** 用用需要得所有head标签,及meta,favicon
  */
  head: {
    title: process.env.npm_package_name || '前端SSR框架',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: process.env.npm_package_description || '' }
    ],
    link: [
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },
  /*
  ** 自定义进度条颜色
  */
  loading: { color: '#fff' },
  /*
  ** 全局 CSS
  */
  css: [
    'iview/dist/styles/iview.css'
  ],
  /*
  ** Plugins to load before mounting the App
  */
  plugins: [
    `@/plugins/iview`,
    `@/plugins/axios`
  ],
  /*
  ** Nuxt.js dev-modules
  */
  buildModules: [
  ],
  /*
  ** Nuxt.js modules
  */
  modules: [
  ],
  /*
  ** Build configuration
  */
  build: {
    // 参数详解地址  https://github.com/webpack-contrib/webpack-bundle-analyzer#as-plugin
    // 分析并可视化构建后的打包文件，你可以基于分析结果来决定如何优化它。
    // analyze: {},
    /*
    ** 扩展webpack配置 config: webpack 配置对象
    ** 第二个参数 ctx 上下文 参见 api 主要 中  Context 参数
    */
   extend (config, { isClient }) {
      // 为 客户端打包 进行扩展配置
      if (isClient) {
        config.devtool = 'eval-source-map';
        if (config.module) {
          let rules = config.module.rules;
          if (!rules) {
            config.module.rules.push([
              {
                test: /\.less$/,
                use: [
                    "vue-style-loader",
                    "css-loader",
                    "postcss-loader",
                    "less-loader"
                ]
              }
            ])
          }
        }
      }
    },
    // babel转码处理 建议使用默认预设 
    // babel: {
      // presets ({ isServer }) {
      //   const targets = isServer ? { node: 'current' } : { ie: '9' }
      //   return [
      //     [ require.resolve('@nuxt/babel-preset-app'), { targets } ]
      //   ]
      // }
    // },
    // 默认已开启postcss，可在此处自定义
    // postcss: {
    //   plugins: {
    //     'postcss-import': {},
    //     'postcss-url': {},
    //     'postcss-preset-env': {},
    //     'cssnano': { preset: 'default' } // disabled in dev mode
    //   }
    // },
    // 代码分割  如果代码分模块用于 layout, pages 和 commons
    // splitChunks: {
    //   layouts: false,
    //   pages: true,
    //   commons: true
    // }
  },
  // 路由设置
  router: {
    // 全局路由前缀
    base: '/',
    mode: 'history', // 路由模式  默认  history  可选 hash
    middleware: 'auth', // 全局中间件配置,在组件内引用的为路由中间件，作用都是在路由未跳转前进行操作，例如： 验证返回登陆，添加统计请求，加载数据等。
    // middleware: 'stats', // 在middleware 定义中间件 这个地方是全局配置，可在page页面单独配置  例如：页面访问统计，每次页面路由改变时被调用。
  },
  server: {
    port: server.port,
    host: server.host,
    // https: {
    //   key: fs.readFileSync(path.resolve(__dirname, 'server.key')),
    //   cert: fs.readFileSync(path.resolve(__dirname, 'server.crt'))
    // },
    // socket: '/tmp/nuxt.socket'
  },
  // npm run build 打包位置  默认: .nuxt;
  buildDir: '.nuxt',
  // 修改web文件路径
  srcDir: `${clientdir}/`,  // 注意： middleware 中间件是根据这个目录下的middleware进行加载的， middleware 可以在 dir 配置项设置别名
  dir: {
    // assets: `${dir}/assets`,
    layouts: `layouts`,  // 修改默认入口文件的文件夹
    // middleware: `middleward`,
    // pages: `pages`,
    // static: `static`,
    // store: `store`
  },
  // 服务端中间件
  serverMiddleware: [
      // '~/server/middleware/log4.js'
  ],
  // vue 配置
  // vue: {
  //   config: {
  //     productionTip: true,
  //     devtool: false,
  //   }
  // }
  // 自定义监听的文件夹重启服务器
  // watch: []
}
